// @ts-ignore
import {request} from 'umi';
import {DataEntity, TreeEntity} from "@/assets/entity/base";
import {getApiPrefix, paramsChange} from "@/assets/utils/utils";

/**
 * 获取实体
 * @param moduleUrl 模块url
 * @param id
 */
export async function get(moduleUrl: string, id: string) {
  return request(getApiPrefix(moduleUrl) + "/get", {
    params:{
      id:id
    }
  });
}

/**
 * 获取列表
 * @param moduleUrl 模块url
 * @param params
 */
export async function list(moduleUrl: string, params?: any) {
  return request(getApiPrefix(moduleUrl) + "/list", {
    params,
  });
}

/**
 * 获取分页
 * @param moduleUrl 模块url
 * @param params
 */
export async function page(moduleUrl: string, params?: any) {
  return request(getApiPrefix(moduleUrl) + "/page", {
    params,
  });
}

/**
 * 删除
 * @param moduleUrl 模块url
 * @param id
 */
export async function removeById(moduleUrl: string, id?: String) {
  return request(getApiPrefix(moduleUrl) + "/remove", {
    method: 'POST',
    params:{
      id:id
    }
  });
}

/**
 * 保存
 * @param moduleUrl 模块url
 * @param params
 */
export async function save(moduleUrl: string, params: DataEntity) {
  // 支持嵌套实体
  let newParams = paramsChange(params);
  return request(getApiPrefix(moduleUrl) + "/save", {
    method: 'POST',
    data: {
      ...newParams,
    },
  });
}

/**
 * 获取select列表
 * @param moduleUrl 模块url
 * @param params
 */
export async function listForSelect(moduleUrl: string, params?: any) {
  return request(getApiPrefix(moduleUrl) + "/listForSelect", {
      params,
  });
}

/**
 * 获取树形数据
 */
export const treeData = async (moduleUrl: string, params?: TreeEntity) => {
  return request(getApiPrefix(moduleUrl) + "/treeData", {
    params,
  });
}
